package cn.tedu.revew;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/*用于Arraylist的相关测试*/
public class TestArrayLIst {
    public static void main(String[] args) {
        /*底层会自动帮我们创建数组来存放对象,并且数组的初始容量是10*/
        ArrayList<Integer> list=new ArrayList<>();
        list.add(100);
        list.add(200);
        list.add(300);
        list.add(400);
        System.out.println(list);

//        list.clear();
//        System.out.println(list);
        System.out.println(list.contains(100));
        System.out.println(list.get(0));
        System.out.println(list.indexOf(400));
        System.out.println(list.lastIndexOf(400));
        //System.out.println(list.remove(300));
        /*上面的代码会报错,数组下标越界:index300  size:6
        * 主要是因为list中有两个重载是index索引,如果想指定元素来删除
        * 需要把int类型的300手动装箱成Integer类型的300 元素*/
        System.out.println(list.remove(Integer.valueOf(300)));
        System.out.println(list);

        ArrayList<Integer> list2=new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        list2.add(4);
        System.out.println(list2);
        list.addAll(list2);
        System.out.println(list);
        list.removeAll(list2);
        System.out.println(list);
        System.out.println(list.containsAll(list2));

        list.add(300);
        list.add(400);
        /*list.add(200);
        list.add(100);
        list.add(200);*/

        /*1.for循环
        * 2.高效for循环
        * 3.iterator
        * 4.listIterator*/
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        for(int  aa:list){
            System.out.println(aa);
        }
        Iterator<Integer>  it=list2.iterator();
        Iterator<Integer> it1 = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        /*方式四listIterator属于list接口独有的迭代器
        * Iterator<E>--父接口--hasNext()next()
        * listIterator<E>--子接口--可以使用父接口的功能，还有自己的功能
        * 比如逆序遍历,添加元素等,但不常用
        * public interface listIterator<E> extends Iterator<E>
        */
        ListIterator<Integer> it2 = list.listIterator();
        while (it2.hasNext()){
            System.out.println(it2.next());
        }



    }
}
